﻿

using System.Diagnostics;

//生成1到20的数组
int[] arr = Enumerable.Range(1, 20).ToArray();
//定义同等长度的数组大小
int[] arrRes = new int[arr.Length];


Stopwatch sw = new Stopwatch();
sw.Start();

//使用Parallel并行操作,调用HeavyJob
//Parallel.For(0, arr.Length, n => arrRes[n] = HeavyJob(arr[n]));

//使用PLINQ
//可以使用AsOrdered 增加排序设置
arrRes = arr.AsParallel().AsOrdered().Select(HeavyJob).ToArray();

sw.Stop();

Console.WriteLine($"耗时:{sw.Elapsed.Milliseconds}");

//打印结果数组
PrintArr(arrRes);

Console.ReadLine();

//模拟耗时工作
int HeavyJob(int input)
{
    Thread.Sleep(100);
    return input * input;
}

void PrintArr(int[] arr)
{
    for(int i=0; i<arr.Length;i++)
    {
        Console.WriteLine($"数组[{i}]的值:{arr[i]}");
    }
}